函数定义和调用

概述

函数是编程中的基本构建块之一,它允许我们将代码组织成可重用的模块。通过函数,我们可以将复杂的任务分解为更小、更易于管理的片段。在本教程中,我们将学习如何在 Swift 中定义和调用函数,包括函数的参数和返回值。

1. 函数的定义

在 Swift 中,函数通过 func 关键字来定义。一个函数的基本结构如下:

func 函数名(参数列表) -> 返回类型 {
    // 函数体
    return 返回值
}

1.1 无参数无返回值的函数

最简单的函数形式是没有参数和返回值的函数。例如:

func greet() {
    print("Hello, World!")
}

1.2 有参数无返回值的函数

函数可以接受一个或多个参数。参数列表由参数名和参数类型组成,多个参数之间用逗号分隔。例如:

func greet(name: String) {
    print("Hello, \(name)!")
}

1.3 有参数有返回值的函数

函数还可以返回一个值。返回类型通过 -> 符号指定。例如:

func add(a: Int, b: Int) -> Int {
    return a + b
}

2. 函数的调用

定义函数后,我们可以通过函数名来调用它。调用函数时,需要传递相应的参数。

2.1 调用无参数无返回值的函数

greet()  // 输出: Hello, World!

2.2 调用有参数无返回值的函数

greet(name: "Alice")  // 输出: Hello, Alice!

2.3 调用有参数有返回值的函数

let result = add(a: 3, b: 5)
print(result)  // 输出: 8

3. 函数的参数

3.1 参数标签

在 Swift 中,函数参数可以有外部参数标签和内部参数名。外部参数标签用于调用函数时,内部参数名用于函数体内。例如:

func greet(to name: String) {
    print("Hello, \(name)!")
}

greet(to: "Bob")  // 输出: Hello, Bob!

3.2 省略参数标签

如果不想在调用函数时使用参数标签,可以使用下划线 _ 来省略外部参数标签。例如:

func greet(_ name: String) {
    print("Hello, \(name)!")
}

greet("Charlie")  // 输出: Hello, Charlie!

3.3 默认参数值

函数参数可以有默认值。如果在调用函数时没有提供该参数,将使用默认值。例如:

func greet(name: String = "Guest") {
    print("Hello, \(name)!")
}

greet()  // 输出: Hello, Guest!
greet(name: "David")  // 输出: Hello, David!

4. 函数的返回值

函数可以返回一个值,返回值的类型通过 -> 符号指定。如果函数没有返回值,可以省略 -> 符号。

4.1 单个返回值

func square(number: Int) -> Int {
    return number * number
}

let result = square(number: 4)
print(result)  // 输出: 16

4.2 多个返回值

函数可以返回多个值,通过元组(tuple)实现。例如:

func minMax(array: [Int]) -> (min: Int, max: Int) {
    var currentMin = array[0]
    var currentMax = array[0]
    for value in array[1..<array.count] {
        if value < currentMin {
            currentMin = value
        } else if value > currentMax {
            currentMax = value
        }
    }
    return (currentMin, currentMax)
}

let bounds = minMax(array: [8, -6, 2, 109, 3, 71])
print("最小值: \(bounds.min), 最大值: \(bounds.max)")  // 输出: 最小值: -6, 最大值: 109

5. 实践练习

练习 1: 定义一个函数,计算两个数的平均值

func average(a: Double, b: Double) -> Double {
    return (a + b) / 2
}

let avg = average(a: 10, b: 20)
print("平均值: \(avg)")  // 输出: 平均值: 15.0

练习 2: 定义一个函数,判断一个数是否为偶数

func isEven(number: Int) -> Bool {
    return number % 2 == 0
}

let num = 7
if isEven(number: num) {
    print("\(num) 是偶数")
} else {
    print("\(num) 是奇数")
}  // 输出: 7 是奇数

练习 3: 定义一个函数,返回一个字符串的长度

func stringLength(str: String) -> Int {
    return str.count
}

let length = stringLength(str: "Hello, Swift!")
print("字符串长度: \(length)")  // 输出: 字符串长度: 13

6. 总结

在本教程中,我们学习了如何在 Swift 中定义和调用函数,包括函数的参数、返回值以及如何使用参数标签和默认参数值。函数是编程中的重要工具,通过合理地使用函数,我们可以提高代码的可读性和可维护性。

下一步

接下来,我们将学习如何使用闭包表达式和尾随闭包,这是 Swift 中函数式编程的重要组成部分。继续学习,你将能够编写更加简洁和强大的代码。